import axios from 'axios';
import local from '../utlis/local'
//添加基本配置,创建axios对象
const instance = axios.create({
  baseURL: 'http://127.0.0.1:8888/api/private/v1/', //设置基本路由
//  withCredentials: true, //表示跨域请求是否需要凭证，值为布尔类型，例如withCredentials: false,默认值为false
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' //设置服务器响应头
  },
  //允许向服务器发送请求前，在该参数中修改请求数据
  transformRequest: [function (data) {
    let newData = '';
    for (let k in data) {
      if (data.hasOwnProperty(k) === true) {
        newData += encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) + '&';
      }
    }
    return newData;
  }]
});

      //使用请求拦截将token挂载到请求头参数中
      instance.interceptors.request.use(
        function(config){
            // 将token信息设置给请求参数
            config.headers.Authorization=local.get('token');
          return config;
        }
      )

      //响应拦截
    instance.interceptors.response.use(
        function(result){
          return result.data;  //直接返回结果中的data给调用者
        },
        function(err){
          return err;
        }
     )
//创建请求函数,调用此函数会返回一个promise对象。method为提交方式 url为请求路径 params为请求参数
function apiAxios(method, url, params) {
  return instance({
    method: method,
    url: url,
    data: method === 'POST' || method === 'PUT' ? params : null,
    params: method === 'GET' || method === 'DELETE' ? params : null,
  })
}
//导出get，post，put，delete提交方式的函数
export default {
    //查询数据
  get: function (url, params) {
    return apiAxios('GET', url, params)
  },
  //添加数据
  post: function (url, params) {
    return apiAxios('POST', url, params)
  },
  //修改数据
  put: function (url, params) {
    return apiAxios('PUT', url, params)
  },
  //删除数据
  delete: function (url, params) {
    return apiAxios('DELETE', url, params)
  },
  //执行多个axios后统一处理结果
  axiosall: function (axiosArray){
      return axios.all(axiosArray);
  }
  /*
  axiosall的调用方式：
    http.axiosall([
            http.get("/book/query"),
            http.get("/book/query")
        ]).then((rsts)=>{
        console.log(rsts);
        })
  */
}
